perm filename CSC.MF[CM,DEK]2 blob sn#796672 filedate 1985-06-23 generic text, type T, neo UTF8
% Caps and Small Caps in Computer Modern Roman

font_coding_scheme:=if ligs>0:"TeX text without f-ligatures"
 else: "TeX typewriter text" fi;
spanish_shriek=oct"016"; spanish_query=oct"017";

mode_setup; font_setup;
input romanu;	% upper case (majuscules)
input greeku;	% upper case greek letters
input romand;	% numerals
input romanp;	% ampersand, question marks, currency sign
input romspu;	% uppercase specials (AE, OE, O/)
input punct;	% punctuation symbols common to all roman and italic
input accent;	% accents common to roman and italic text
input romsub;	% substitutes for ligatures
if ligs>0: input comlig; fi	% ligatures common with italic

ligtable "!": "`" =: spanish_shriek;
ligtable "?": "`" =: spanish_query;
font_slant slant;
if monospace: font_normal_space 9u#; % no stretching or shrinking
 font_xheight x_height#;
 font_quad 18u#;
 font_extra_space 9u#;
else: font_normal_space 6u#+2letter_fit#;
 font_normal_stretch 3u#; font_normal_shrink 2u#;
 font_xheight x_height#;
 font_quad 18u#+4letter_fit#;
 font_extra_space 2u#;
 numeric k,kk,kkk; k=-.5u#; kk=-1.5u#; kkk=-2u#; % three degrees of kerning
 ligtable "P": "T": "Y": "A" kern kk, "a" kern kk;
 ligtable "F": "V": "W": "A" kern kkk, "a" kern kkk,
  "K": "X": "O" kern k, "o" kern k, "C" kern k, "c" kern k,
   "G" kern k, "g" kern k, "Q" kern k, "q" kern k;
 ligtable "O": "D": "A" kern k, "a" kern k, "W" kern k, "w" kern k,
   "Y" kern k, "y" kern k, "V" kern k, "v" kern k, "X" kern k, "x" kern k;
 ligtable "A": if serifs: "R": fi "L": "T" kern kk, "t" kern kk,
   "O" kern k, "o" kern kk, "U" kern k, "u" kern k, "C" kern k, "c" kern k,
   "W" kern kkk, "w" kern kkk, "Y" kern kk, "y" kern kk,
   "G" kern k, "g" kern k, "V" kern kkk, "v" kern kkk, "Q" kern k, "q" kern k;
 ligtable "I": "I" kern -k; fi % Richard III
% there are ligature/kern programs for "-", "`", and "'" in the comlig file

forsuffixes $= u, width_adj, cap_serif_fit, letter_fit,
 body_height, cap_height, x_height, bar_height, comma_depth,
 flare, cap_hair, stem, cap_stem, cap_curve, cap_ess,
 cap_jut, beak_jut, beak, slab, cap_bar, cap_band, cap_notch_cut,
 o, apex_o:  $.#:=lower.$.#; endfor
fudge:=lower.fudge;
font_setup; % now try again with |lower| settings
string x_endchar; x_endchar=extra_endchar;
extra_endchar:=x_endchar&"charcode:=charcode+32"; % |ASCII"a"-ASCII"A"=32|
input romanu;	% majuscules (in lowercase positions)
extra_endchar:=x_endchar&"charcode:=charcode-3";
input romspu;	% AE, OE, O/ (in positions of ae, oe, o/)
extra_endchar:=x_endchar;
input cscspu;	% substitutes for the remaining characters of romspl
if not monospace:
 numeric k,kk,kkk; k=-.5u#; kk=-1.5u#; kkk=-2u#; % three degrees of kerning
 ligtable "p": "t": "y": "a" kern kk;
 ligtable "f": "v": "w": "a" kern kkk,
  "k": "x": "o" kern k, "c" kern k, "g" kern k, "q" kern k;
 ligtable "o": "d": "a" kern k, "w" kern k, "y" kern k,
  "v" kern k, "x" kern k;
 ligtable "a": "l": "'" kern kk, if serifs: "r": fi "t" kern kk,
  "o" kern kk, "u" kern k, "c" kern k, "w" kern kkk,
  "y" kern kk, "g" kern k, "v" kern kkk, "q" kern k;
 ligtable "i": "i" kern -k; fi % skiing

if known Xerox_world: font_family font_identifier;
 coding_scheme font_coding_scheme;
 font_face_byte 254-2 round designsize; fi % Dover code for CM; 154==AM
tracingstats:=10; % temporary
end.